package fr.bludwarf.skywarrior.ile;

import fr.bludwarf.skywarrior.joueur.Ressources;
import fr.bludwarf.skywarrior.joueur.TypeUnite;

public class TypeBatiment extends TypeUnite {
	//           		   													temps de constr.			, PV/att/def					, cout					 		production
	public static final TypeBatiment PALAIS = 		new TypeBatiment("Palais"		, 0							, new StatsCombat(300, 0, 0)	, new Ressources(250, 0, 0),	new Ressources(7, 0, 5));
	public static final TypeBatiment CARRIERE =		new TypeBatiment("Carrière"		, 3 * 3600 + 45 * 60		, new StatsCombat(200, 0, 0)	, new Ressources(100, 0, 0),	new Ressources(4, 0, 0));
	public static final TypeBatiment CHAMPS = 		new Champs();
	public static final TypeBatiment TISSERAND = 	new TypeBatiment("Tisserand"	, 1 * 3600 + 52 * 60 + 30	, new StatsCombat(100, 0, 0)	, new Ressources(120, 0, 0));
	public static final TypeBatiment ATELIER = 		new TypeBatiment("Atelier"		, 1 * 3600 + 52 * 60 + 30	, new StatsCombat(100, 0, 0)	, new Ressources(150, 0, 0));
	public static final TypeBatiment POMPE = 		new TypeBatiment("Pompe"		, 1 * 3600 + 15 * 60		, new StatsCombat( 50, 0, 0)	, new Ressources(60, 0, 0),		new Ressources(0, 1, 0));
	public static final TypeBatiment CASERNE = 		new TypeBatiment("Caserne"		, 0 * 3600 + 37 * 60 + 30	, new StatsCombat(100, 0, 0)	, new Ressources(75, 0, 0));
	public static final TypeBatiment TOUR_DE_GUET = new TypeBatiment("Tour de guet"	, 0 * 3600 + 37 * 60 + 30	, new StatsCombat(50, 0, 0)		, new Ressources(75, 0, 0));
	public static final TypeBatiment ECOLE = 		new TypeBatiment("Ecole"		, 1 * 3600 + 15 * 60 + 0	, new StatsCombat(100, 0, 0)	, new Ressources(100, 0, 0));
	public static final TypeBatiment UNIVERSITE = 	new TypeBatiment("Université"	, 2 * 3600 + 30 * 60 + 0	, new StatsCombat(200, 0, 0)	, new Ressources(200, 80, 0));
	public static final TypeBatiment LABORATOIRE = 	new TypeBatiment("Laboratoire"	, 1 * 3600 + 15 * 60 + 0	, new StatsCombat(50, 0, 0)		, new Ressources(100, 30, 0));
	public static final TypeBatiment FERME = 		new TypeBatiment("Ferme"		, 1 * 3600 + 15 * 60 + 0	, new StatsCombat(50, 0, 0)		, new Ressources(150, 0, 0));
	public static final TypeBatiment MOULIN = 		new TypeBatiment("Moulin"		, 1 * 3600 + 15 * 60 + 0	, new StatsCombat(100, 0, 0)	, new Ressources(100, 0, 0));
	public static final TypeBatiment CANON = 		new TypeBatiment("Canon"		, 0 * 3600 + 37 * 60 + 30	, new StatsCombat(100, 20, 0)	, new Ressources(60, 0, 0));
	public static final TypeBatiment POMPIER = 		new TypeBatiment("Pompier"		, 1 * 3600 + 15 * 60 + 00	, new StatsCombat(100, 0, 0)	, new Ressources(75, 15, 0));
	public static final TypeBatiment MANUFACTURE = 	new TypeBatiment("Manufacture"	, 3 * 3600 + 45 * 60 + 00	, new StatsCombat(200, 0, 0)	, new Ressources(450, 200, 0));
	public static final TypeBatiment HURLEUR = 		new TypeBatiment("Hurleur"		, 1 * 3600 + 15 * 60 + 00	, new StatsCombat(100, 35, 0)	, new Ressources(120, 40, 0));
	public static final TypeBatiment ARCHIMORTIER = new TypeBatiment("Archimortier"	, 6 * 3600 + 15 * 60 + 00	, new StatsCombat(200, 0, 0)	, new Ressources(900, 400, 0));
	public static final TypeBatiment BUNKER = 		new TypeBatiment("Bunker"		, 1 * 3600 + 15 * 60 + 00	, new StatsCombat(100, 0, 5)	, new Ressources(100, 0, 0));
	public static final TypeBatiment ARCHITECTE = 	new TypeBatiment("Architecte"	, 1 * 3600 + 15 * 60 + 00	, new StatsCombat(100, 0, 0)	, new Ressources(100, 0, 0));
	public static final TypeBatiment FORT = 		new TypeBatiment("Fort"			, 1 * 3600 + 15 * 60 + 00	, new StatsCombat(300, 60, 2)	, new Ressources(200, 0, 0));
	public static final TypeBatiment FONDERIE = 	new TypeBatiment("Fonderie"		, 1 * 3600 + 15 * 60 + 00	, new StatsCombat(100, 0, 0)	, new Ressources(60, 60, 0));
	
	/** Production de base du batiment (matériaux et éther par cycle + nourriture apportée) */
	private Ressources _prod = Ressources.VIDES;
	
	protected TypeBatiment(final String nom, final int duree, final StatsCombat combat, final Ressources cout)
	{
		super(nom, duree, combat, cout, 0);
	}
	
	protected TypeBatiment(final String nom, final int duree, final StatsCombat combat, final Ressources cout, final Ressources prod)
	{
		this(nom, duree, combat, cout);
		_prod = prod;
	}

	public Ressources getProduction(EtatIle etatIle) {
		return _prod;
	}

}
